package com.dkd.sbtz.domain;

import com.dkd.common.core.domain.entity.SysDept;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.dkd.common.annotation.Excel;
import com.dkd.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 设备台账对象 asset_node
 * 
 * @author xzj
 * @date 2025-09-02
 */
@Data
public class Sbtz extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private Long id;

    /** 名称 */
    @Excel(name = "名称")
    private String name;

    /** 设备类型，外键 asset_type.type_code */
    @Excel(name = "设备类型，外键 asset_type.type_code")
    private String nodeType;

    /** 业务编码（如 RA0001_R001_D001） */
    @Excel(name = "业务编码", readConverterExp = "如=,R=A0001_R001_D001")
    private String code;

    /** 父ID（根=0） */
    @Excel(name = "父ID", readConverterExp = "根==0")
    private Long parentId;

    /** 祖先链(逗号分隔) */
    @Excel(name = "祖先链(逗号分隔)")
    private String ancestors;

    /** 层级(根=1) */
    @Excel(name = "层级(根=1)")
    private Integer level;

    /** 物化路径 /10/11/15/ */
    @Excel(name = "物化路径 /10/11/15/")
    private String path;

    /** 显示顺序 */
    @Excel(name = "显示顺序")
    private Integer orderNum;

    /** 删除标志（0代表存在 2代表删除） */
    private Integer delFlag;

    /** 设备规格 */
    @Excel(name = "设备规格")
    private String specification;

    /** 设备型号 */
    @Excel(name = "设备型号")
    private String model;

    /** 设备材质 */
    @Excel(name = "设备材质")
    private String material;

    /** 设备等级 */
    @Excel(name = "设备等级")
    private String grade;

    /** 设备功率 */
    @Excel(name = "设备功率")
    private String power;

    /** 设备品牌 */
    @Excel(name = "设备品牌")
    private String brand;

    /** 制造厂家 */
    @Excel(name = "制造厂家")
    private String manufacturer;


    private Integer isKey;

    /** 到货时间 */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "到货时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date arrivalDate;

    /** 安装时间 */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "安装时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date installDate;

    /** 确认完成时间 */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "确认完成时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date confirmDate;

    /** 启用时间 */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "启用时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 退役时间 */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "退役时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date retireDate;

//    @DateTimeFormat(pattern = "yyyy-MM-dd")
//    @JsonFormat(pattern = "yyyy-MM-dd")
//    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
//    private Date createTime;
//
//    @DateTimeFormat(pattern = "yyyy-MM-dd")
//    @JsonFormat(pattern = "yyyy-MM-dd")
//    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
//    private Date updateTime;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;



    /** 设备测试信息 */
    @Excel(name = "设备测试信息")
    private String testInfo;

    /** 设备维护维修信息 */
    @Excel(name = "设备维护维修信息")
    private String maintInfo;

    /** 固定资产编号 */
    @Excel(name = "固定资产编号")
    private String codeNum;

    /** 设备位号 */
    @Excel(name = "设备位号")
    private String positionCode;

    /** 设备状态 */
    @Excel(name = "设备状态")
    private Integer status;

    /** 设备位置 */
    @Excel(name = "设备位置")
    private String location;

    /** 是否特种设备(0否,1是) */
    @Excel(name = "是否特种设备(0否,1是)")
    private Integer isSpecial = 0;

    @Excel(name = "部门名称")
    private Integer deptId = 0;

    @Excel(name = "备件名称")
    private Long spareId = 0L;

    /** 设备资料（文件路径或URL） */
    @Excel(name = "设备资料", readConverterExp = "文=件路径或URL")
    private String docs;

    private List<Sbtz> children = new ArrayList<Sbtz>();

    private List<Spare> spareInfos;

    private List<AssetAssessment> assessmentInfos;



    /** 设备模块（DB: mokuai） */
    @Excel(name = "设备模块")
    private String mokuai;


    /** 设备区域（DB: area） */
    @Excel(name = "设备区域")
    private String area;

    @Excel(name = "设备类别")
    private String beType;

    private String beTypeFirst;

    /** 设计温度(℃)（DB: design_temp） */
    @Excel(name = "设计温度(℃)")
    private String designTemp;

    /** 设计压力(MPa)（DB: design_press） */
    @Excel(name = "设计压力(MPa)")
    private String designPress;

    /** 电机功率(KW)（DB: motor_power） */
    @Excel(name = "电机功率(KW)")
    private String motorPower;

    /** 搅拌形式（DB: mixing_type） */
    @Excel(name = "搅拌形式")
    private String mixingType;

    /** 单位（DB: unit） */
    @Excel(name = "单位")
    private String unit;

    /** 数量（DB: quantity） */
    @Excel(name = "数量")
    private Integer quantity;

    /** 金额(万)（DB: amount） */
    @Excel(name = "金额(万)")
    private BigDecimal amount;

    private String keyword;

    private String hash;

    /* ==================== ↑ 新增字段（与库一致）↑ ==================== */

}
